X-RayのトレースデータをCloudWatchのTransaction Searchに連携して分析してみた

X-RayのトレースデータをCloudWatchのTransaction Searchに連携して分析してみた

Clock Icon2024.11.30

リテールアプリ共創部@大阪の岩田です。

少し前ですが2024/11/21付けのアップデートでApplication Signalsの機能強化としてスパンを分析・検索するためのTransaction Searchという機能が利用可能になりました。

https://aws.amazon.com/about-aws/whats-new/2024/11/amazon-cloudwatch-visibility-application-transactions/?nc1=h_ls

すごくざっくり説明するとX-Rayに送信したスパンが自動的にCloudWatch Logsに連携されるという機能です。CW Logsに連携されるということはCW Logs Insightsを使ったクエリを実行したり、サブスクリプションフィルタでFirehoseに連携したりといったCW Logsの各種機能の恩恵が受けられることになります。これによって従来は実現できなかったような検索や可視化が可能になり、オブザーバビリティが強化されます!

やってみる

さっそくTransaction Searchを試してみます。Transaction Searchを利用するには大きく以下の2通りの方法があります。

今回はX-Rayに送信されたスパンを自動連携する方法で試していきたいと思います。

Transaction Searchを有効化

CloudWatchのマネコン

まずCloudWatchのマネコンから「X-Ray トレース」→「トランザクション検索」を選択し、「Enable Transaction Search」をクリックします。

CloudWatch設定

続いて「X-Ray トレース」の「ビュー設定」をクリックします。

X-Rayトレースの設定

「Transaction Search」のメニューから「編集」をクリック。

TransactionSearchの有効化

「Enable transaction search」のオプション「Check this option to ingest spans as structured logs」にチェックを入れ「X-Ray trace indexing」にサンプリングレートを入力します。検証が目的なのでここでは100%を設定していますが、ここはコストとのトレードオフがあるので注意してください。コストの詳細は料金ページに記載されていますが、東京リージョンの場合だと最初の10TBのデータ取り込みに対して0.35USD/GBの料金が発生します。その他X-Rayのトレースサマリーとしてインデックス化されたスパン、取り込みを除いた標準の CloudWatch Logs 料金が発生します。

「Save」をクリックしたら有効化完了です。利用可能になるまでしばらく時間がかかるので待ちましょう。

Transaction Searchを実行してみる

Transaction Searchが利用可能になったら実際に試してみます。先日Application Signalsのブログを書いたときのLambdaが残っているので、これを何度かテスト実行してみました。

https://dev.classmethod.jp/articles/cw-application-signals-support-lambda/

しばらく待ってからCW Logsのロググループaws/spansを確認するとスパンのログが流れてきました。

CW Logs上でスパンのログを確認

マネコンの「トランザクション検索」からクエリを実行してみます。クエリを実行する際は以下のようにビジュアルエディタを利用する方法か、CW Logs Insightsのクエリを生で書くか2パターンの方式から選択可能です。実行したいクエリの内容やクエリの習熟度に応じて適宜使い分けると便利でしょう。

CW Logs Insightsのクエリ

ビジュアルエディタ

最後にスパンの可視化を試してみます。サービス名ごとの件数を水平バーに表示してみます。

スパンの可視化

やってることはCW Logs Insightsを使ったクエリなので集計&可視化といった操作もお手のものです。従来のX-RayのクエリではCW Logs Insightsのstats相当の集計処理は実現できませんでしたが、今回のアップデートによって今後はこういった可視化も簡単に行えるようになりました。

まとめ

簡単にですがTransaction Searchを試してみました。

個人的にX-RayはLambdaのコールドスタート関連の技術検証に使うことが多いのですが、既存のクエリ機能だけではどうしても欲しい情報が一発で取得できないのが悩みでした。今回のアップデートによってX-Ray → CW Logs → サブスクリプションフィルターでFirehoseに連携 → S3 → Athenaで分析 という流れが簡単に組めるようになったのがとても嬉しいです。

X-Rayの既存機能だけだとちょっと機能不足を感じていた人にはとても刺さりそうなアップデートです。X-Rayだけだと心もとない場合は外部のSaaS製品導入が選択肢になりますが、今後はTransaction Searchを有効化するというのも良い選択肢になりそうです。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.